export interface Breakpoint {
  id: string;
  line: number;
  column?: number;
  condition?: string;
  enabled: boolean;
  verified: boolean;
  type: 'line' | 'conditional' | 'logpoint';
  logMessage?: string;
}

export interface DebugVariable {
  name: string;
  value: string;
  type: string;
  reference?: number;
  variablesReference?: number;
  children?: DebugVariable[];
  expanded?: boolean;
}

export interface StackFrame {
  id: number;
  name: string;
  source: string;
  line: number;
  column: number;
}

export interface DebugThread {
  id: number;
  name: string;
}

export interface DebugSession {
  id: string;
  state: 'stopped' | 'running' | 'paused' | 'terminated';
  currentLine?: number;
  threads: DebugThread[];
  currentThread?: DebugThread;
  stackFrames: StackFrame[];
  currentStackFrame?: StackFrame;
  variables: DebugVariable[];
  breakpoints: Breakpoint[];
}

export interface DebugEvent {
  type: 'stopped' | 'continued' | 'breakpoint' | 'step' | 'exception' | 'output' | 'terminated';
  threadId?: number;
  reason?: string;
  description?: string;
  text?: string;
  line?: number;
  source?: string;
}

export interface DebugRequest {
  type: 'launch' | 'attach' | 'setBreakpoints' | 'continue' | 'next' | 'stepIn' | 'stepOut' | 'pause' | 'terminate' | 'evaluate';
  sessionId: string;
  data?: any;
}

export interface DebugResponse {
  success: boolean;
  message?: string;
  data?: any;
}

export interface WatchExpression {
  id: string;
  expression: string;
  value?: string;
  error?: string;
} 